From 4a380f72ba251011c35216ab7a6f6918b5d0485e Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Tue, 30 Nov 2010 11:34:08 +0000 Subject: [PATCH] x86 hvm: Do not overwrite boot-cpu capability data on VMX/SVM startup. Apparently required back in the earliest days of Xen, we now properly initialise CPU capabilities early during bootstrap. Re-writing capability data later now causes problems if specific features have been deliberately masked out. Thanks to Weidong Han at Intel for finding such a bug where XSAVE feature is masked out by default, but then erroneously written back during VMX initialisation. This would cause memory corruption problems during boot for XSAVE-capable systems. Signed-off-by: Keir Fraser --- xen/arch/x86/hvm/svm/svm.c | 3 --- xen/arch/x86/hvm/vmx/vmx.c | 3 --- 2 files changed, 6 deletions(-) diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index a43bc728dc..aefaabc415 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -885,9 +885,6 @@ static int svm_cpu_up(void) struct hvm_function_table * __init start_svm(void) { - /* Xen does not fill x86_capability words except 0. */ - boot_cpu_data.x86_capability[5] = cpuid_ecx(0x80000001); - if ( !test_bit(X86_FEATURE_SVME, &boot_cpu_data.x86_capability) ) return NULL; diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index e24f0093e4..2dd14b4fd7 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -1394,9 +1394,6 @@ static struct hvm_function_table __read_mostly vmx_function_table = { struct hvm_function_table * __init start_vmx(void) { - /* Xen does not fill x86_capability words except 0. */ - boot_cpu_data.x86_capability[4] = cpuid_ecx(1); - if ( !test_bit(X86_FEATURE_VMXE, &boot_cpu_data.x86_capability) ) return NULL; -- 2.30.2